歡迎來到第27 天,祝各位雙十愉快!
在學習分散式運算前,無法體會為什麼需要這樣的架構存在直到有一天意識到,當資料量級大到無法將所有資料放在同一個電腦裡的時候,運算將會變成非常的困難與緩慢,因此需要分散式運算。傳統的運算概念是從節點中將資料讀出,並將資料送進 CPU 進行運算,但分散式運算必較像是將運算邏輯送入各個節點進行運算,在將結果送入中心進行最終運算。
在 MapReduce 中,有兩個關鍵的階段 Map 和 Reduce。流程會是:
資料進行處理是將原始資料以 Key-Value 的形式儲存於每個節點,同一個 Key 的資料不一定會被儲存到同一個節點,通常會是分散的。
進入 Map 階段,可以理解為在節點上的第一層運算。這個節點的產出會一樣以 Key-Value 呈現,但在這個階段只有一個 uni-key。
接下來進入將所有分散在節點的結果匯入 Reduce 節點,在這個時刻,資料型態又會像回到 Map 階段的狀態,並在這個階段再進行一次運算,吐出最終的結果。
這個流程可以多次擴展並提升運算效能。
以上就是今天的學習筆記。我們明天見!